# 作者:何恺
# 2025年02月20日09时57分28秒
# 2557170485@qq.com
"""
对象是由类创造的具体存在
类需要有： 类名 属性 方法

"""

class Person:
    def __init__(self, name,age):
        self.name = name
        self.age = age


elephant = Person('大象',18)
elephant.name = '66'
# print(elephant.name)

class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        pass

    def eat(self):
        pass

    def __del__(self):
        print("空间释放")

    def __str__(self):
        """
        需要返回字符串类型，打印对象时，得到的就是这个函数的返回值
        :return:
        """
        return self.name+'666'
dog1 = Dog('dog')
# del dog1  # 提前释放
# dir()里面可以放类名也可以放对象名
# print(dir(Person))
#print(dog1)

# self代表对象自己
# 对象也是可变数据类型，在实例化对象的时候可以在外面增加属性，但实际不会这么写

class HouseItem:
    def __init__(self, name,area):
        self.name = name
        self.area = area

    def __str__(self):
        return "[%s] 占地 %.2f "%(self.name,self.area)

class House:
    def __init__(self, house_type, area):
        self.house_type = house_type
        self.area = area
        self.free_area = area  # 剩余面积
        self.item_list = []  # 家具列表

    def add_item(self,item:HouseItem):  # 冒号加类名是注解的作用
        print(f"要添加{item}")
        if self.free_area >= item.area:
            self.item_list.append(item)
            self.free_area -= item.area
        else:
            print("没有空间了")

    def __str__(self):
        return(f"户型{self.house_type}\n")



bed = HouseItem("席梦思", 4)
print(bed)






